package com.zyf.service.ai;

import com.zyf.utils.StringUtil;

import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * 处理豆包AI类
 */
public class HandleAiBP {

    /**
     * 通过豆包AI批量生成图片
     */
    public void getImgsByDoubao(String txtPath) throws Exception {
        //获取提示内容的全部
        List<String> contentList = getContentByLine(txtPath);
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(15);
            for (String content : contentList) {
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(760, 890);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                // 定义要输入的文本内容
                StringSelection stringSelection = new StringSelection(content);
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, null);
                // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                TimeUnit.SECONDS.sleep(1);
                // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                TimeUnit.SECONDS.sleep(18);


                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(760, 890);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                // 定义要输入的文本内容
                StringSelection stringSelection2 = new StringSelection("生成图片");
                Clipboard clipboard2 = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard2.setContents(stringSelection2, null);
                // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                TimeUnit.SECONDS.sleep(1);
                // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                TimeUnit.SECONDS.sleep(18);


            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过豆包AI批量生成图片
     */
    public void getPoemByDoubao(String txtPath) throws Exception {
        //获取提示内容的全部
        List<String> contentList = getContentByLine(txtPath);
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(15);
            for (int i = 0; i < 30; i++) {
                for (String content : contentList) {
                    // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                    robot.mouseMove(720, 920);
                    // 按下鼠标左键
                    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    // 释放鼠标左键，完成一次点击
                    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    // 定义要输入的文本内容
                    StringSelection stringSelection = new StringSelection(content);
                    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                    clipboard.setContents(stringSelection, null);
                    // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                    robot.keyPress(KeyEvent.VK_CONTROL);
                    robot.keyPress(KeyEvent.VK_V);
                    robot.keyRelease(KeyEvent.VK_V);
                    robot.keyRelease(KeyEvent.VK_CONTROL);
                    TimeUnit.SECONDS.sleep(1);
                    // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                    robot.keyPress(KeyEvent.VK_ENTER);
                    robot.keyRelease(KeyEvent.VK_ENTER);
                    TimeUnit.SECONDS.sleep(180);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过豆包AI批量生成图片
     */
    public void getPoemByDoubao(String content, int total) throws Exception {
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(15);
            for (int i = 0; i < total; i++) {
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(720, 920);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                // 定义要输入的文本内容
                StringSelection stringSelection = new StringSelection(content);
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, null);
                // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                TimeUnit.SECONDS.sleep(1);
                // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                TimeUnit.SECONDS.sleep(180);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过豆包AI输出提示
     */
    public void inputByDoubao(String tip) throws Exception {
        //获取提示内容的全部
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(10);
            for (int i = 0; i < 500; i++) {
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(760, 880);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                // 定义要输入的文本内容
                StringSelection stringSelection = new StringSelection(tip);
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, null);
                // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                TimeUnit.SECONDS.sleep(1);
                // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                TimeUnit.SECONDS.sleep(2 * 60);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过豆包AI批量生成图片
     */
    public void getSingleImgsByDoubao(String content, int total) throws Exception {
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(15);
            for (int i = 0; i < total; i++) {
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(800, 850);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                // 定义要输入的文本内容
                StringSelection stringSelection = new StringSelection(content);
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, null);
                // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                TimeUnit.SECONDS.sleep(1);
                // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                TimeUnit.SECONDS.sleep(28);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过豆包AI批量生成图片
     */
    public void uploadImgsByDoubao(int total) throws Exception {
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(15);
            for (int i = 0; i < total; i++) {
                //点击下载按钮
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(1474, 218);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                TimeUnit.SECONDS.sleep(2);

                //点击向右按钮
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(890, 790);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                TimeUnit.SECONDS.sleep(2);

                //点击向右按钮
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(1500, 540);
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                TimeUnit.SECONDS.sleep(2);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public List<String> getContentByLine(String filepath) throws Exception {
        List<String> contents = new ArrayList<>();
        InputStream inputstream = null;
        BufferedReader reader = null;
        String temp = "";
        try {
            inputstream = new FileInputStream(new File(filepath));
            reader = new BufferedReader(new InputStreamReader(inputstream));
            while ((temp = reader.readLine()) != null) {
                if (temp.length() > 5) {
                    contents.add(temp.trim());
                }
            }
        } catch (Exception e) {
            System.out.println(e.toString());
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (inputstream != null) {
                try {
                    inputstream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return contents;
    }

    /**
     * 通过豆包AI批量生成图片
     */
    public void uploadFiles(String txtPath, String location) throws Exception {
        //获取提示内容的全部
        String[] locations = location.split("&");
        List<String> contentList = getContentByLine(txtPath);
        try {
            Robot robot = new Robot();
            TimeUnit.SECONDS.sleep(15);
            for (int i = 0; i < contentList.size(); i++) {
                String url = "https://shy.cnegroup.com/prod-api/service/imageFilesInfo/downloadFile?fileId=";
                // 模拟鼠标移动到坐标(100, 100)位置（这里坐标可根据实际需求调整）
                robot.mouseMove(Integer.valueOf(locations[0]), Integer.valueOf(locations[1]));
                // 按下鼠标左键
                robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                // 释放鼠标左键，完成一次点击
                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                // 定义要输入的文本内容
                StringSelection stringSelection = new StringSelection(url + contentList.get(i));
                Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                clipboard.setContents(stringSelection, null);
                // 模拟按下粘贴快捷键（Windows系统下一般是Ctrl + V，Linux等系统下可能是Ctrl + Shift + V等，这里以Windows为例）
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                TimeUnit.SECONDS.sleep(1);
                // 模拟按下回车键（KeyEvent.VK_ENTER对应回车键的键码）
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                TimeUnit.SECONDS.sleep(5);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
